home *** CD-ROM | disk | FTP | other *** search
/ World of Amiga / World of Amiga.iso / archive / assembly / modripper.lha / noiseripper.S < prev   
Text File  |  1990-09-13  |  22KB  |  1,323 lines

  1.     section l,code_p
  2.  
  3. ;--- NOISERIPPER V1.15 WRITTEN BY ALLEYCAT OF THALYSIS 
  4. ;
  5. ;--- STARTUP-CODE    /  NOW IT CAN BE LOADED FROM CLI AND WB
  6.  
  7.     MOVEM.L    D0/A0,-(SP)
  8.     CLR.L    WBENCHMSG
  9.  
  10.     MOVE.L    4,A6
  11.     SUB.L    A1,A1
  12.     JSR    -294(A6)
  13.     MOVE.L    D0,A4
  14.  
  15.     TST.L    $AC(A4)
  16.     BEQ    FROM_WB
  17.  
  18.     MOVEM.L    (SP)+,D0/A0
  19.     BRA    RUN
  20.  
  21. FROM_WB:LEA    $5C(A4),A0
  22.     JSR    -384(A6)
  23.     LEA    $5C(A4),A0
  24.     JSR    -372(A6)
  25.     MOVE.L    D0,WBENCHMSG
  26.  
  27.     MOVEM.L    (SP)+,D0/A0
  28. RUN:    BSR    MAIN
  29.     MOVE.L    D0,-(SP)
  30.     TST.L    WBENCHMSG
  31.     BEQ    EXIT
  32.     
  33.     JSR    -132(A6)
  34.     MOVE.L    WBENCHMSG(PC),A1
  35.     JSR    -378(A6)
  36. EXIT:
  37.     MOVE.L    (SP)+,D0
  38.     RTS
  39.  
  40. WBENCHMSG:    dc.L    1
  41.     EVEN
  42.  
  43. ;     --- THE REAL CODE ---
  44.  
  45. MAIN:    LEA    DOSLIBNAME(PC),A1
  46.     MOVEQ    #0,D0
  47.     MOVE.L    4,A6        ; ABSOLUTE EXEC-BASE
  48.     JSR    -552(A6)    ; OPENLIBRARY
  49.     MOVE.L    D0,DOSBASE
  50.  
  51.     MOVE.L    D0,A6
  52.     MOVE.L    #1005,D2
  53.     MOVE.L    #WSTRUCT,D1
  54.     JSR    -30(A6)
  55.     MOVE.L    D0,WHANDLE
  56.  
  57. *********************************
  58. BUILDMENU:
  59.     MOVEQ    #0,D4
  60.     MOVE.L    #$7FF00,D5
  61.  
  62.     LEA    CLSTEXT(PC),A2
  63.     BSR    PRINT        ; WRITE (CLEAR FRAMES)
  64.     LEA    CTEXT1(PC),A2
  65.     BSR    PRINT
  66.  
  67.     MOVE.L    DOSBASE,A6
  68.     MOVE.L    WHANDLE(PC),D1
  69.     MOVE.L    #BUFFER,D2
  70.     MOVE.L    #2,D3
  71.     JSR    -42(A6)        ; READ
  72.     
  73.     MOVE.B    BUFFER(PC),D5
  74.     BCLR    #5,D5        ; CHANGE TO UPPERCASE
  75.  
  76.     CMP.B    #`X`,D5
  77.     BEQ    OUTRUN
  78.     CMP.B    #`L`,D5
  79.     BEQ    STARTSEARCH2
  80.     CMP.B    #`H`,D5
  81.     BEQ    STARTSEARCH
  82.  
  83.     BRA    BUILDMENU
  84.  
  85. ********************************************
  86. OUTRUN:
  87.     MOVE.L    DOSBASE(PC),A6
  88.     MOVE.L    WHANDLE(PC),D1
  89.     JSR    -36(A6)        ; CLOSEWINDOW
  90.     
  91.     MOVE.L    4,A6
  92.     MOVE.L    DOSBASE(PC),A1
  93.     JSR    -414(A6)    ; CLOSELIBRARY
  94.     RTS
  95.  
  96. ***********************************
  97. STARTSEARCH:
  98.     MOVE.L    #$C00000,D4
  99.     MOVE.L    #$C7FF00,D5
  100. STARTSEARCH2:
  101.     MOVE.L    D4,STARTPOS
  102.     MOVE.L    D5,ENDPOS
  103.  
  104.     LEA    CTEXT2(PC),A2
  105.     BSR    PRINT
  106.  
  107.     MOVE.L    D4,A0
  108.  
  109. MK2:    CMP.B    #`M`,(A0)
  110.     BNE    MK1
  111.     CMP.B    #`.`,1(A0)
  112.     BNE    MK1
  113.     CMP.B    #`K`,2(A0)
  114.     BNE    MK1
  115.     CMP.B    #`.`,3(A0)
  116.     BNE    MK1
  117.  
  118.     MOVE.L    A0,D5
  119.     BTST    #0,D5
  120.     BNE    MK1
  121.  
  122.     MOVE.L    A0,ACTUALPOS
  123.     SUB.L    #$438,A0
  124.     BCLR    #0,MK
  125.     BRA    SONG_FOUND
  126.  
  127. MK1:    ADDQ    #1,A0
  128.  
  129.     MOVE.B    (A0),$dff180
  130.  
  131.     CMP.L    ENDPOS(PC),A0
  132.     BNE    MK2
  133.  
  134. *PASS*2***********************
  135.     LEA    CTEXT5(PC),A2
  136.     BSR    PRINT
  137.  
  138.     MOVE.L    STARTPOS(PC),A0
  139.  
  140. SK2:    CMP.B    #`S`,(A0)
  141.     BEQ    SK3
  142.     CMP.B    #`s`,(A0)
  143.     BNE    SK1
  144. SK3:    CMP.B    #`T`,1(A0)
  145.     BEQ    SK4
  146.     CMP.B    #`t`,1(A0)
  147.     BNE    SK1
  148. SK4:    CMP.B    #`-`,2(A0)
  149.     BNE    SK1
  150.  
  151.     MOVE.L    A0,D5
  152.     BTST    #0,D5
  153.     BNE    SK1
  154.  
  155. ;    --- IS IT A SONG ? ---
  156.  
  157.     MOVE.L    A0,A1
  158.     SUB.L    #20,A1
  159.     MOVEQ    #19,D0
  160. SO2:    MOVE.B    (A1)+,D1
  161.     BEQ    SO1
  162.     CMP.B    #122,D1
  163.     BHI    SK1
  164.     CMP.B    #31,D1
  165.     BLS    SK1
  166. SO1:    DBF    D0,SO2
  167.  
  168.     MOVE.L    A0,ACTUALPOS
  169.     SUB.L    #20,A0
  170.     BSET    #0,MK
  171.     BRA    SONG_FOUND
  172.  
  173. SK1:    ADDQ    #1,A0
  174.  
  175.     MOVE.B    (A0),$DFF180
  176.     MOVE.B    #0,$DFF181
  177.  
  178.     CMP.L    ENDPOS(PC),A0
  179.     BNE    SK2
  180.     BRA    BUILDMENU
  181.  
  182. ************************
  183. SONG_FOUND:
  184.     MOVE.L    A0,D5
  185.     MOVE.L    D5,D7
  186. SONG_AGAIN:
  187.     MOVE.L    D7,D5
  188.     BSR    C_TO_A
  189.     BSR    CALCLEN
  190.                 ; --- print adress
  191.     LEA    CTEXT3(PC),A2
  192.     BSR    PRINT
  193.     LEA    CHARBLOCK(PC),A2
  194.     BSR    PRINT
  195.                 ; --- print name
  196.     LEA    CTEXT6(PC),A2
  197.     BSR    PRINT
  198.     MOVE.L    D7,A2
  199.     BSR    PRINT
  200.  
  201.     BSR    CALCINT    
  202.                 ; --- print length
  203.     LEA    CTEXT7(PC),A2
  204.     BSR    PRINT
  205.     MOVE.L    TOTALLEN,D5
  206.     BSR    C_TO_A
  207.     LEA    CHARBLOCK+3(PC),A2
  208.     BSR    PRINT
  209.                 ; --- song length
  210.     LEA    CTEXT8(PC),A2
  211.     BSR    PRINT
  212.     MOVE.L    D7,A0
  213.     MOVEQ    #0,D5
  214.     MOVE.B    $3B6(A0),D5
  215.     BSR    C_TO_A
  216.     LEA    CHARBLOCK+6(PC),A2
  217.     BSR    PRINT
  218.                 ; --- number of patterns
  219.     LEA    CTEXT9(PC),A2
  220.     BSR    PRINT
  221.     MOVE.L    HIGHPAT(PC),D5
  222.     ADDQ    #1,D5
  223.     JSR    C_TO_A
  224.     LEA    CHARBLOCK+6(PC),A2
  225.     BSR    PRINT
  226.  
  227.     BSR    COPYINST
  228.     LEA    CTEXT10(PC),A2
  229.     BSR    PRINT
  230. * * * * * * * * * * * * * * * * * * * * 
  231. MENU_2:
  232.     MOVEQ    #32,D0
  233.     LEA    BUFFER(PC),A0
  234. CLEAR:    MOVE.B    #0,(A0)+
  235.     DBF    D0,CLEAR
  236.  
  237.     LEA    BUFFER(PC),A2
  238.     MOVE.L    DOSBASE(PC),A6
  239.     MOVE.L    WHANDLE(PC),D1
  240.     MOVE.L    A2,D2
  241.     MOVEQ    #32,D3
  242.     JSR    -42(A6)        ; READ
  243.     MOVE.B    #0,-1(A2,D0)
  244.  
  245.     BCLR    #5,BUFFER
  246.  
  247.     MOVE.B    BUFFER(PC),D1
  248.     MOVEQ    #0,D0
  249.     LEA    OPTIONS(PC),A0
  250. TNT:    ADDQ    #1,D0
  251.     MOVE.B    (A0)+,D2
  252.     CMP.B    D1,D2
  253.     BNE    TNT
  254.     SUBQ    #1,D0
  255.     CMP.B    #10,D0
  256.     BHI    NO_OPT
  257.     LSL.L    #2,D0
  258.     LEA    OPTIONS2(PC),A1
  259.     MOVE.L    (A1,D0),A1
  260.     JMP    (A1)
  261. NO_OPT:
  262.     BRA    SONG_AGAIN
  263.  
  264.  
  265. ***********************
  266. COPYMOD:
  267.     MOVE.L    D7,A0
  268.     MOVE.L    #$40000,A1
  269.     MOVE.L    TOTALLEN(PC),D0
  270. CM1:    MOVE.B    (A0)+,(A1)+
  271.     DBF    D0,CM1
  272.     BRA    SONG_AGAIN
  273. ***********************
  274. FLIPFILTER:
  275.     MOVE.B    #0,D0
  276.     BTST    #1,$BFE001
  277.     BNE    FF1
  278.     ADD.B    #1,D0
  279. FF1:    AND.B    #1,D0
  280.     ASL.B    #1,D0
  281.     AND.B    #$FD,$BFE001
  282.     OR.B    D0,$BFE001
  283.     BRA    SONG_AGAIN
  284. ***********************
  285. FLIPPY:
  286.     LEA    CTEXT10+92(PC),A0
  287.     LEA    TERENCE(PC),A1
  288.     MOVEQ    #22,D0
  289. FL1:    MOVE.B    (A1)+,(A0)+
  290.     DBF    D0,FL1
  291.     BCHG    #0,FLIP
  292.     BRA    SONG_AGAIN
  293.  
  294. ***********************
  295. CONTI:
  296.     BCLR    #0,FLIP
  297.     BSR    CLEARLIST
  298.     MOVE.L    ACTUALPOS(PC),A0
  299.     TST.B    MK
  300.     BEQ    MK1
  301.     BRA    SK1
  302.  
  303. ***********************
  304. PLAYIT:
  305.     MOVE.L    D7,A0
  306.     MOVE.B    $3B6(A0),SONGLEN
  307.     MOVE.B    $3B7(A0),PLAYERM
  308.     MOVE.L    A0,MT_DATA
  309.     BSR    MT_INIT
  310.     MOVE.W    #$4000,$DFF09A
  311.     MOVE.L    $6C,OLDIRQ
  312.     MOVE.L    #NEWIRQ,$6C
  313.     MOVE.W    #$C000,$DFF09A
  314.     BSR    MO
  315.     MOVE.W    #$4000,$DFF09A
  316.     MOVE.L    OLDIRQ,$6C
  317.     MOVE.W    #$C000,$DFF09A
  318.     BSR    MT_END
  319.     BRA    SONG_AGAIN
  320.  
  321. ***********************
  322. RENAME:
  323.     LEA    BUFFER+1(PC),A0
  324.     MOVE.L    D7,A1
  325.     MOVEQ    #19,D0
  326. RN1:    MOVE.B    (A0)+,(A1)+
  327.     DBF    D0,RN1
  328.     BRA    SONG_AGAIN
  329.  
  330. ***********************
  331. INSTRENAME:
  332.     LEA    BUFFER+1(PC),A2
  333.     BSR    CONVERT
  334.     SUBQ    #1,D0
  335.     BMI    IR5
  336.     MULU    #30,D0
  337.     MOVE.L    D7,A0
  338.     ADD.L    #20,A0
  339.     ADD.L    D0,A0
  340.     ADDQ    #1,A2
  341.     MOVEQ    #21,D0
  342. IR4:    MOVE.B    (A2)+,(A0)+
  343.     DBF    D0,IR4
  344. IR5:    BRA    SONG_AGAIN
  345.  
  346. ***********************
  347. PLAYINST:
  348.     LEA    BUFFER+1(PC),A2
  349.     BSR    CONVERT
  350.     MOVE.L    D0,D5
  351.     LSL.L    #2,D0
  352.     LEA    INSTIS(PC),A0
  353.     MOVE.L    (A0,D0),D2
  354.     BNE    PI1
  355.     BRA    SONG_AGAIN
  356. PI1:    
  357.     SUBQ    #1,D5
  358.     MULU    #30,D5
  359.  
  360.     MOVE.L    D7,A0
  361.     ADD.L    #42,A0
  362.     ADD.L    D5,A0
  363.     MOVE.W    (A0),D0
  364.     MOVE.W    #400,D3
  365. PI2:
  366.     MOVE.W    #$000F,$DFF096
  367.     MOVE.W    D0,$DFF0A4    
  368.     MOVE.W    D0,$DFF0B4    
  369.     MOVE.W    D0,$DFF0C4    
  370.     MOVE.W    D0,$DFF0D4    
  371.     MOVE.W    D3,$DFF0A6
  372.     MOVE.W    D3,$DFF0B6
  373.     MOVE.W    D3,$DFF0C6
  374.     MOVE.W    D3,$DFF0D6
  375.     MOVE.W    #64,$DFF0A8
  376.     MOVE.W    #64,$DFF0B8
  377.     MOVE.W    #64,$DFF0C8
  378.     MOVE.W    #64,$DFF0D8
  379.     MOVE.L    D2,$DFF0A0
  380.     MOVE.L    D2,$DFF0B0
  381.     MOVE.L    D2,$DFF0C0
  382.     MOVE.L    D2,$DFF0D0
  383.     MOVE.W    #$800F,$DFF096
  384.  
  385. PI3:    BTST    #6,$BFE001
  386.     BEQ    PI4
  387.     BTST    #2,$DFF016
  388.     BEQ    PI5
  389.     BRA    PI3
  390. PI4:    BTST    #2,$DFF016
  391.     BEQ    PI6
  392.     ADD.B    #1,SOFT
  393.     BNE    PI3
  394.     ADD.W    #1,D3
  395.     MOVE.B    #0,SOFT
  396.     BRA    PI2
  397.  
  398. PI5:    BTST    #6,$BFE001
  399.     BEQ    PI6
  400.     ADD.B    #1,SOFT
  401.     BNE    PI3
  402.     SUB.W    #1,D3
  403.     MOVE.B    #0,SOFT
  404.     BRA    PI2
  405.  
  406. PI6:    MOVE.W    #$000F,$DFF096
  407.     BRA    SONG_AGAIN
  408.  
  409.  
  410. * * * * * * * * * * * *
  411. SAVING:
  412.     MOVE.B    BUFFER+1(PC),D0
  413.     BCLR    #5,D0
  414.  
  415.     CMP.B    #`M`,D0
  416.     BEQ    SAVEMOD
  417.     CMP.B    #`I`,D0
  418.     BEQ    SAVEINST
  419.     CMP.B    #`F`,D0
  420.     BEQ    SAVESELF
  421.     BRA    SONG_AGAIN
  422.  
  423. ***********************
  424. SAVEMOD:
  425.     MOVE.L    D7,A0
  426.     LEA    NAMEMOD(PC),A1
  427.     MOVEQ    #19,D0
  428. SM1:    MOVE.B    (A0)+,(A1)+
  429.     DBF    D0,SM1
  430.  
  431.     MOVE.L    DOSBASE(PC),A6
  432.     MOVE.L    #FILEBUFFER,D1
  433.     MOVE.L    #1006,D2
  434.     JSR    -30(A6)
  435.     MOVE.L    D0,FILEHANDLE
  436.     BEQ    ERROR
  437.  
  438.     MOVE.L    FILEHANDLE(PC),D1
  439.     MOVE.L    D7,D2
  440.     MOVE.L    TOTALLEN(PC),D3
  441.     JSR    -48(A6)
  442.  
  443.     BRA    CLOSE_DOWN
  444.  
  445. ******************************
  446. ERROR:
  447.     LEA    CTEXT11(PC),A2
  448.     BSR    PRINT
  449.     BSR    MO    
  450.     BRA    SONG_AGAIN
  451.  
  452. ************************
  453. SAVEINST:
  454.     LEA    BUFFER+2(PC),A2
  455.     BSR    CONVERT
  456.  
  457.     MOVE.L    D0,D5
  458.     LSL.L    #2,D0
  459.     LEA    INSTIS(PC),A0
  460.     MOVE.L    (A0,D0),D6
  461.     BNE    SI4
  462.     BRA    SONG_AGAIN
  463. SI4:    
  464.     SUBQ    #1,D5
  465.     MULU    #30,D5
  466.  
  467.     MOVE.L    D7,A0
  468.     ADD.L    #20,A0
  469.     ADD.L    D5,A0
  470.  
  471.     MOVE.L    A0,D4
  472.     MOVEQ    #0,D5
  473.     ADD.L    #22,A0
  474.     MOVE.W    (A0),D5
  475.     LSL.L    #1,D5
  476.  
  477.     MOVE.L    DOSBASE(PC),A6
  478.     MOVE.L    D4,D1
  479.     MOVE.L    #1006,D2
  480.     JSR    -30(A6)
  481.     MOVE.L    D0,FILEHANDLE
  482.     BEQ    ERROR
  483.  
  484.     MOVE.L    FILEHANDLE(PC),D1
  485.     MOVE.L    D6,D2
  486.     MOVE.L    D5,D3
  487.     JSR    -48(A6)
  488.  
  489. CLOSE_DOWN:
  490.     MOVE.L    FILEHANDLE(PC),D1
  491.     JSR    -36(A6)
  492.  
  493.     BRA    SONG_AGAIN
  494.  
  495. ************************
  496. SAVESELF:
  497.     LEA    CTEXT12(PC),A2
  498.     BSR    PRINT
  499.  
  500.     LEA    FILEBUFFER2(PC),A2
  501.     MOVE.L    DOSBASE(PC),A6
  502.     MOVE.L    WHANDLE(PC),D1
  503.     MOVE.L    A2,D2
  504.     MOVEQ    #49,D3
  505.     JSR    -42(A6)        ; READ
  506.     MOVE.B    #0,-1(A2,D0)
  507.  
  508.     MOVE.L    DOSBASE,A6
  509.     MOVE.L    #FILEBUFFER2,D1
  510.     MOVE.L    #1006,D2
  511.     JSR    -30(A6)
  512.     MOVE.L    D0,FILEHANDLE
  513.     BEQ    ERROR
  514.  
  515.     MOVE.L    FILEHANDLE(PC),D1
  516.     MOVE.L    D7,D2
  517.     MOVE.L    TOTALLEN(PC),D3
  518.     JSR    -48(A6)
  519.  
  520.     BRA    CLOSE_DOWN
  521.  
  522. ********************
  523. NEWIRQ:
  524.     MOVEM.L    D0-D6/A0-A6,-(SP)
  525.  
  526.     BSR    MT_MUSIC
  527.  
  528.     MOVEM.L    (SP)+,D0-D6/A0-A6
  529.         dc.W    $4EF9
  530. OLDIRQ:     dc.L 0
  531.  
  532. ********************************
  533. ;-S-U-B-R-O-U-T-I-N-E-S-
  534. ;*******************************
  535. ;
  536. PRINT:
  537.     MOVE.L    A2,D2
  538.     MOVE.L    DOSBASE(PC),A6
  539.     MOVE.L    WHANDLE(PC),D1
  540.     MOVEQ    #0,D3
  541. ZERO:    CMP.B    #0,(A2)+
  542.     BEQ    DOPRINT
  543.     ADDQ    #1,D3
  544.     BRA    ZERO
  545. DOPRINT:
  546.     JSR    -48(A6)
  547.     RTS
  548.  
  549. ****************************
  550. CALCLEN:
  551.     MOVEQ    #0,D0
  552.     MOVEQ    #0,D1
  553.     MOVEQ    #0,D2
  554.  
  555.     MOVE.L    D7,A0
  556.     MOVE.B    $3B6(A0),D0
  557.     SUBQ    #1,D0
  558.     BNE    CL1
  559.     MOVE.B    $3B8(A0),D1
  560.     BRA    CL4
  561. CL1:
  562.     ADD.L    #$3B8,A0
  563.     MOVE.B    (A0)+,D1
  564. CL2:
  565.     MOVE.B    (A0)+,D2
  566.     CMP.B    D1,D2
  567.     BLS    CL3
  568.     EXG    D2,D1
  569. CL3:
  570.     DBF    D0,CL2
  571. CL4:
  572.     MOVEQ    #0,D4
  573.     MOVE.B    D1,D4
  574.     MOVE.L    D4,HIGHPAT
  575.  
  576.     MOVE.L    D7,A0
  577.     MOVEQ    #0,D0
  578.     MOVEQ    #0,D1
  579.     MOVEQ    #0,D2
  580.     MOVEQ    #31,D3
  581. CL5:
  582.     MOVE.W    $2A(A0,D0),D1
  583.     ADD.L    D1,D2
  584.     ADD.L    #30,D0
  585.     DBF    D3,CL5
  586.  
  587.     LSL.L    #1,D2
  588.     MOVE.L    D2,INSTLEN
  589.     
  590.     ADDQ    #1,D4
  591.     LSL.L    #5,D4
  592.     LSL.L    #5,D4
  593.     ADD.L    INSTLEN,D4
  594.     ADD.L    #1084,D4
  595.     MOVE.L    D4,TOTALLEN
  596.     RTS
  597.  
  598. ****************************
  599. CALCINT:
  600.     MOVEQ    #0,D0
  601.     MOVE.L    D7,D4
  602.     ADD.L    TOTALLEN(PC),D4
  603.     SUB.L    INSTLEN(PC),D4
  604.     LEA    INSTIS+4(PC),A0
  605.  
  606.     MOVE.L    D7,A2
  607.     ADD.L    #42,A2
  608.  
  609.     MOVEQ    #30,D6
  610. CC1:    MOVE.W    (A2),D0
  611.     LSL.L    #1,D0
  612.     BNE    CC2
  613.     MOVE.L    #0,(A0)+
  614.     BRA    CC3
  615. CC2:    MOVE.L    D4,(A0)+
  616.     ADD.L    D0,D4
  617. CC3:    ADD.L    #30,A2
  618.     DBF    D6,CC1
  619.     RTS
  620.  
  621. *****************************
  622. C_TO_A:
  623.     MOVEM.L    D0-D5/A0,-(SP)
  624.  
  625.     LEA    CHARBLOCK(PC),A0
  626.     MOVEQ    #7,D2
  627. CTA1:    
  628.     MOVE.L    D5,D3
  629.     ROL.L    #4,D3
  630.     MOVE.L    D3,D5
  631.     AND.B    #$0F,D3
  632.     CMP.B    #9,D3
  633.     BLE    CTA2
  634.     ADD.B    #55,D3
  635.     BRA    CTA3
  636. CTA2:
  637.     ADD.B    #$30,D3
  638. CTA3:
  639.     MOVE.B    D3,(A0)+
  640.     DBF    D2,CTA1
  641.     MOVEM.L    (SP)+,D0-D5/A0
  642.     RTS
  643.  
  644. *******************************
  645. COPYINST:
  646.     LEA    CTEXT10+67(PC),A1
  647.     MOVE.L    D7,A0
  648.     ADD.L    #20,A0
  649.     TST.B    FLIP
  650.     BEQ    CI1
  651.     ADD.L    #450,A0
  652.     MOVEQ    #15,D3
  653.     BRA    CI2
  654. CI1:    MOVEQ    #19,D0
  655. CI0:    MOVE.B    #`-`,(A1)+
  656.     DBF    D0,CI0
  657.     ADD.L    #37,A1
  658.     MOVEQ    #14,D3
  659.  
  660. CI2:    MOVEQ    #19,D6
  661.  
  662. CI3:    MOVE.B    (A0)+,D4
  663.     CMP.B    #32,D4
  664.     BHI    CI4
  665.     BRA    CI5
  666. CI4:    CMP.B    #128,D4
  667.     BLS    CI6
  668. CI5:    MOVE.B    #`.`,D4
  669. CI6:    MOVE.B    D4,(A1)+
  670.     DBF    D6,CI3
  671.  
  672.     ADDQ    #2,A0
  673.     ADDQ    #5,A1
  674.                     ; LENGTH
  675.     MOVEQ    #0,D5
  676.     MOVE.W    (A0)+,D5
  677.     LSL.L    #1,D5
  678.     BSR    C_TO_A
  679.  
  680.     LEA    CHARBLOCK+3(PC),A2
  681.  
  682.     MOVEQ    #4,D6
  683. CI7:    MOVE.B    (A2)+,(A1)+
  684.     DBF    D6,CI7
  685.                     ; REPLEN
  686.     LEA    CHARBLOCK+3(PC),A2
  687.     ADDQ    #4,A1
  688.     ADDQ    #2,A0
  689.     MOVEQ    #0,D5
  690.     MOVE.W    (A0)+,D5
  691.     LSL.L    #1,D5
  692.     BSR    C_TO_A
  693.  
  694.     MOVEQ    #4,D6
  695. CI8:    MOVE.B    (A2)+,(A1)+
  696.     DBF    D6,CI8
  697.                     ; REPEAT
  698.     LEA    CHARBLOCK+3(PC),A2
  699.     ADDQ    #4,A1
  700.     MOVEQ    #0,D5
  701.     MOVE.W    (A0)+,D5
  702.     LSL.L    #1,D5
  703.     BSR    C_TO_A
  704.  
  705.     MOVEQ    #4,D6
  706. CI9:    MOVE.B    (A2)+,(A1)+
  707.     DBF    D6,CI9
  708.  
  709.     ADD.L    #9,A1
  710.     DBF    D3,CI2
  711.     RTS
  712.  
  713. *******************************
  714. CLEARLIST:
  715.     LEA    CTEXT10+67(PC),A0
  716.     MOVEQ    #15,D1
  717. CRL2:    MOVEQ    #19,D0
  718. CRL1:    MOVE.B    #`.`,(A0)+
  719.     DBF    D0,CRL1
  720.     ADD.L    #37,A0
  721.     DBF    D1,CRL2
  722.     RTS
  723.  
  724. ********************************
  725. CONVERT:
  726.     MOVEQ    #0,D0
  727.     MOVE.B    (A2),D0
  728.     CMP.B    #`9`,D0
  729.     BLS    CO1
  730.     BCLR    #5,D0
  731.     SUB.B    #39,D0
  732.     TST.B    FLIP
  733.     BNE    CO0
  734.     SUB.B    #16,D0
  735. CO0:    BRA    CO2
  736. CO1:    SUB.B    #32,D0
  737.     TST.B    FLIP
  738.     BNE    CO2
  739.     SUB.B    #16,D0
  740. CO2:    RTS
  741.  
  742.  
  743. ;-----------------------------
  744. MO:    BTST    #6,$BFE001
  745.     BNE MO
  746.     RTS
  747.  
  748. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  749. ;­   NOISETRACKERV1.0 REPLAYROUTINE   ­
  750. ;­ MAHONEY & KAKTUS - HALLONSOFT 1989 ­
  751. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  752.  
  753. MT_INIT:MOVE.L    MT_DATA(PC),A0
  754.     MOVE.L    A0,A1
  755.     ADD.L    #$3B8,A1
  756.     MOVEQ    #$7F,D0
  757.     MOVEQ    #0,D1
  758. MT_LOOP:MOVE.L    D1,D2
  759.     SUBQ.W    #1,D0
  760. MT_LOP2:MOVE.B    (A1)+,D1
  761.     CMP.B    D2,D1
  762.     BGT.S    MT_LOOP
  763.     DBF    D0,MT_LOP2
  764.     ADDQ.B    #1,D2
  765.  
  766.     LEA    MT_SAMPLESTARTS(PC),A1
  767.     ASL.L    #8,D2
  768.     ASL.L    #2,D2
  769.     ADD.L    #$43C,D2
  770.     ADD.L    A0,D2
  771.     MOVE.L    D2,A2
  772.     MOVEQ    #$1E,D0
  773. MT_LOP3:CLR.L    (A2)
  774.     MOVE.L    A2,(A1)+
  775.     MOVEQ    #0,D1
  776.     MOVE.W    42(A0),D1
  777.     ASL.L    #1,D1
  778.     ADD.L    D1,A2
  779.     ADD.L    #$1E,A0
  780.     DBF    D0,MT_LOP3
  781.  
  782.     MOVE.B    #$6,MT_SPEED
  783.     CLR.W    $DFF0A8
  784.     CLR.W    $DFF0B8
  785.     CLR.W    $DFF0C8
  786.     CLR.W    $DFF0D8
  787.     CLR.B    MT_SONGPOS
  788.     CLR.B    MT_COUNTER
  789.     CLR.W    MT_PATTPOS
  790.     RTS
  791.  
  792. MT_END:    CLR.W    $DFF0A8
  793.     CLR.W    $DFF0B8
  794.     CLR.W    $DFF0C8
  795.     CLR.W    $DFF0D8
  796.     MOVE.W    #$F,$DFF096
  797.     RTS
  798.  
  799. MT_MUSIC:
  800.     MOVEM.L    D0-D4/A0-A3/A5-A6,-(A7)
  801.     MOVE.L    MT_DATA,A0
  802.     ADDQ.B    #$1,MT_COUNTER
  803.     MOVE.B    MT_COUNTER(PC),D0
  804.     CMP.B    MT_SPEED(PC),D0
  805.     BLT.S    MT_NONEW
  806.     CLR.B    MT_COUNTER
  807.     BRA    MT_GETNEW
  808.  
  809. MT_NONEW:
  810.     LEA    MT_VOICE1(PC),A6
  811.     LEA    $DFF0A0,A5
  812.     BSR    MT_CHECKCOM
  813.     LEA    MT_VOICE2(PC),A6
  814.     LEA    $DFF0B0,A5
  815.     BSR    MT_CHECKCOM
  816.     LEA    MT_VOICE3(PC),A6
  817.     LEA    $DFF0C0,A5
  818.     BSR    MT_CHECKCOM
  819.     LEA    MT_VOICE4(PC),A6
  820.     LEA    $DFF0D0,A5
  821.     BSR    MT_CHECKCOM
  822.     BRA    MT_ENDR
  823.  
  824. MT_ARPEGGIO:
  825.     MOVEQ    #0,D0
  826.     MOVE.B    MT_COUNTER(PC),D0
  827.     DIVS    #$3,D0
  828.     SWAP    D0
  829.     CMP.W    #$0,D0
  830.     BEQ.S    MT_ARP2
  831.     CMP.W    #$2,D0
  832.     BEQ.S    MT_ARP1
  833.  
  834.     MOVEQ    #0,D0
  835.     MOVE.B    $3(A6),D0
  836.     LSR.B    #4,D0
  837.     BRA.S    MT_ARP3
  838. MT_ARP1:MOVEQ    #0,D0
  839.     MOVE.B    $3(A6),D0
  840.     AND.B    #$F,D0
  841.     BRA.S    MT_ARP3
  842. MT_ARP2:MOVE.W    $10(A6),D2
  843.     BRA.S    MT_ARP4
  844. MT_ARP3:ASL.W    #1,D0
  845.     MOVEQ    #0,D1
  846.     MOVE.W    $10(A6),D1
  847.     LEA    MT_PERIODS(PC),A0
  848.     MOVEQ    #$24,D7
  849. MT_ARPLOOP:
  850.     MOVE.W    (A0,D0.W),D2
  851.     CMP.W    (A0),D1
  852.     BGE.S    MT_ARP4
  853.     ADDQ.L    #2,A0
  854.     DBF    D7,MT_ARPLOOP
  855.     RTS
  856. MT_ARP4:MOVE.W    D2,$6(A5)
  857.     RTS
  858.  
  859. MT_GETNEW:
  860.     MOVE.L    MT_DATA(PC),A0
  861.     MOVE.L    A0,A3
  862.     MOVE.L    A0,A2
  863.     ADD.L    #$C,A3
  864.     ADD.L    #$3B8,A2
  865.     ADD.L    #$43C,A0
  866.  
  867.     MOVEQ    #0,D0
  868.     MOVE.L    D0,D1
  869.     MOVE.B    MT_SONGPOS(PC),D0
  870.     MOVE.B    (A2,D0.W),D1
  871.     ASL.L    #8,D1
  872.     ASL.L    #2,D1
  873.     ADD.W    MT_PATTPOS,D1
  874.     CLR.W    MT_DMACON
  875.  
  876.     LEA    $DFF0A0,A5
  877.     LEA    MT_VOICE1(PC),A6
  878.     BSR.S    MT_PLAYVOICE
  879.     LEA    $DFF0B0,A5
  880.     LEA    MT_VOICE2(PC),A6
  881.     BSR.S    MT_PLAYVOICE
  882.     LEA    $DFF0C0,A5
  883.     LEA    MT_VOICE3(PC),A6
  884.     BSR.S    MT_PLAYVOICE
  885.     LEA    $DFF0D0,A5
  886.     LEA    MT_VOICE4(PC),A6
  887.     BSR.S    MT_PLAYVOICE
  888.     BRA    MT_SETDMA
  889.  
  890. MT_PLAYVOICE:
  891.     MOVE.L    (A0,D1.L),(A6)
  892.     ADDQ.L    #4,D1
  893.     MOVEQ    #0,D2
  894.     MOVE.B    $2(A6),D2
  895.     AND.B    #$F0,D2
  896.     LSR.B    #4,D2
  897.     MOVE.B    (A6),D0
  898.     AND.B    #$F0,D0
  899.     OR.B    D0,D2
  900.     TST.B    D2
  901.     BEQ.S    MT_SETREGS
  902.     MOVEQ    #0,D3
  903.     LEA    MT_SAMPLESTARTS(PC),A1
  904.     MOVE.L    D2,D4
  905.     SUBQ.L    #$1,D2
  906.     ASL.L    #2,D2
  907.     MULU    #$1E,D4
  908.     MOVE.L    (A1,D2.L),$4(A6)
  909.     MOVE.W    (A3,D4.L),$8(A6)
  910.     MOVE.W    $2(A3,D4.L),$12(A6)
  911.     MOVE.W    $4(A3,D4.L),D3
  912.     TST.W    D3
  913.     BEQ.S    MT_NOLOOP
  914.     MOVE.L    $4(A6),D2
  915.     ASL.W    #1,D3
  916.     ADD.L    D3,D2
  917.     MOVE.L    D2,$A(A6)
  918.     MOVE.W    $4(A3,D4.L),D0
  919.     ADD.W    $6(A3,D4.L),D0
  920.     MOVE.W    D0,8(A6)
  921.     MOVE.W    $6(A3,D4.L),$E(A6)
  922.     MOVE.W    $12(A6),$8(A5)
  923.     BRA.S    MT_SETREGS
  924. MT_NOLOOP:
  925.     MOVE.L    $4(A6),D2
  926.     ADD.L    D3,D2
  927.     MOVE.L    D2,$A(A6)
  928.     MOVE.W    $6(A3,D4.L),$E(A6)
  929.     MOVE.W    $12(A6),$8(A5)
  930. MT_SETREGS:
  931.     MOVE.W    (A6),D0
  932.     AND.W    #$FFF,D0
  933.     BEQ    MT_CHECKCOM2
  934.     MOVE.B    $2(A6),D0
  935.     AND.B    #$F,D0
  936.     CMP.B    #$3,D0
  937.     BNE.S    MT_SETPERIOD
  938.     BSR    MT_SETMYPORT
  939.     BRA    MT_CHECKCOM2
  940. MT_SETPERIOD:
  941.     MOVE.W    (A6),$10(A6)
  942.     AND.W    #$FFF,$10(A6)
  943.     MOVE.W    $14(A6),D0
  944.     MOVE.W    D0,$DFF096
  945.     CLR.B    $1B(A6)
  946.  
  947.     MOVE.L    $4(A6),(A5)
  948.     MOVE.W    $8(A6),$4(A5)
  949.     MOVE.W    $10(A6),D0
  950.     AND.W    #$FFF,D0
  951.     MOVE.W    D0,$6(A5)
  952.     MOVE.W    $14(A6),D0
  953.     OR.W    D0,MT_DMACON
  954.     BRA    MT_CHECKCOM2
  955.  
  956. MT_SETDMA:
  957.     MOVE.W    #$12C,D0
  958. MT_WAIT:DBF    D0,MT_WAIT
  959.     MOVE.W    MT_DMACON(PC),D0
  960.     OR.W    #$8000,D0
  961.     MOVE.W    D0,$DFF096
  962.     MOVE.W    #$12C,D0
  963. MT_WAI2:DBF    D0,MT_WAI2
  964.     LEA    $DFF000,A5
  965.     LEA    MT_VOICE4(PC),A6
  966.     MOVE.L    $A(A6),$D0(A5)
  967.     MOVE.W    $E(A6),$D4(A5)
  968.     LEA    MT_VOICE3(PC),A6
  969.     MOVE.L    $A(A6),$C0(A5)
  970.     MOVE.W    $E(A6),$C4(A5)
  971.     LEA    MT_VOICE2(PC),A6
  972.     MOVE.L    $A(A6),$B0(A5)
  973.     MOVE.W    $E(A6),$B4(A5)
  974.     LEA    MT_VOICE1(PC),A6
  975.     MOVE.L    $A(A6),$A0(A5)
  976.     MOVE.W    $E(A6),$A4(A5)
  977.  
  978.     ADD.W    #$10,MT_PATTPOS
  979.     CMP.W    #$400,MT_PATTPOS
  980.     BNE.S    MT_ENDR
  981. MT_NEX:    CLR.W    MT_PATTPOS
  982.     CLR.B    MT_BREAK
  983.     ADDQ.B    #1,MT_SONGPOS
  984.     AND.B    #$7F,MT_SONGPOS
  985.     MOVE.B    MT_SONGPOS(PC),D1
  986.     CMP.B    SONGLEN(PC),D1
  987.     BNE.S    MT_ENDR
  988.     MOVE.B    PLAYERM(PC),MT_SONGPOS
  989. MT_ENDR:TST.B    MT_BREAK
  990.     BNE.S    MT_NEX
  991.     MOVEM.L    (A7)+,D0-D4/A0-A3/A5-A6
  992.     RTS
  993.  
  994. MT_SETMYPORT:
  995.     MOVE.W    (A6),D2
  996.     AND.W    #$FFF,D2
  997.     MOVE.W    D2,$18(A6)
  998.     MOVE.W    $10(A6),D0
  999.     CLR.B    $16(A6)
  1000.     CMP.W    D0,D2
  1001.     BEQ.S    MT_CLRPORT
  1002.     BGE.S    MT_RT
  1003.     MOVE.B    #$1,$16(A6)
  1004.     RTS
  1005. MT_CLRPORT:
  1006.     CLR.W    $18(A6)
  1007. MT_RT:    RTS
  1008.  
  1009. MT_MYPORT:
  1010.     MOVE.B    $3(A6),D0
  1011.     BEQ.S    MT_MYSLIDE
  1012.     MOVE.B    D0,$17(A6)
  1013.     CLR.B    $3(A6)
  1014. MT_MYSLIDE:
  1015.     TST.W    $18(A6)
  1016.     BEQ.S    MT_RT
  1017.     MOVEQ    #0,D0
  1018.     MOVE.B    $17(A6),D0
  1019.     TST.B    $16(A6)
  1020.     BNE.S    MT_MYSUB
  1021.     ADD.W    D0,$10(A6)
  1022.     MOVE.W    $18(A6),D0
  1023.     CMP.W    $10(A6),D0
  1024.     BGT.S    MT_MYOK
  1025.     MOVE.W    $18(A6),$10(A6)
  1026.     CLR.W    $18(A6)
  1027. MT_MYOK:MOVE.W    $10(A6),$6(A5)
  1028.     RTS
  1029. MT_MYSUB:
  1030.     SUB.W    D0,$10(A6)
  1031.     MOVE.W    $18(A6),D0
  1032.     CMP.W    $10(A6),D0
  1033.     BLT.S    MT_MYOK
  1034.     MOVE.W    $18(A6),$10(A6)
  1035.     CLR.W    $18(A6)
  1036.     MOVE.W    $10(A6),$6(A5)
  1037.     RTS
  1038.  
  1039. MT_VIB:    MOVE.B    $3(A6),D0
  1040.     BEQ.S    MT_VI
  1041.     MOVE.B    D0,$1A(A6)
  1042.  
  1043. MT_VI:    MOVE.B    $1B(A6),D0
  1044.     LEA    MT_SIN(PC),A4
  1045.     LSR.W    #$2,D0
  1046.     AND.W    #$1F,D0
  1047.     MOVEQ    #0,D2
  1048.     MOVE.B    (A4,D0.W),D2
  1049.     MOVE.B    $1A(A6),D0
  1050.     AND.W    #$F,D0
  1051.     MULU    D0,D2
  1052.     LSR.W    #$6,D2
  1053.     MOVE.W    $10(A6),D0
  1054.     TST.B    $1B(A6)
  1055.     BMI.S    MT_VIBMIN
  1056.     ADD.W    D2,D0
  1057.     BRA.S    MT_VIB2
  1058. MT_VIBMIN:
  1059.     SUB.W    D2,D0
  1060. MT_VIB2:MOVE.W    D0,$6(A5)
  1061.     MOVE.B    $1A(A6),D0
  1062.     LSR.W    #$2,D0
  1063.     AND.W    #$3C,D0
  1064.     ADD.B    D0,$1B(A6)
  1065.     RTS
  1066.  
  1067. MT_NOP:    MOVE.W    $10(A6),$6(A5)
  1068.     RTS
  1069.  
  1070. MT_CHECKCOM:
  1071.     MOVE.W    $2(A6),D0
  1072.     AND.W    #$FFF,D0
  1073.     BEQ.S    MT_NOP
  1074.     MOVE.B    $2(A6),D0
  1075.     AND.B    #$F,D0
  1076.     TST.B    D0
  1077.     BEQ    MT_ARPEGGIO
  1078.     CMP.B    #$1,D0
  1079.     BEQ.S    MT_PORTUP
  1080.     CMP.B    #$2,D0
  1081.     BEQ    MT_PORTDOWN
  1082.     CMP.B    #$3,D0
  1083.     BEQ    MT_MYPORT
  1084.     CMP.B    #$4,D0
  1085.     BEQ    MT_VIB
  1086.     MOVE.W    $10(A6),$6(A5)
  1087.     CMP.B    #$A,D0
  1088.     BEQ.S    MT_VOLSLIDE
  1089.     RTS
  1090.  
  1091. MT_VOLSLIDE:
  1092.     MOVEQ    #0,D0
  1093.     MOVE.B    $3(A6),D0
  1094.     LSR.B    #4,D0
  1095.     TST.B    D0
  1096.     BEQ.S    MT_VOLDOWN
  1097.     ADD.W    D0,$12(A6)
  1098.     CMP.W    #$40,$12(A6)
  1099.     BMI.S    MT_VOL2
  1100.     MOVE.W    #$40,$12(A6)
  1101. MT_VOL2:MOVE.W    $12(A6),$8(A5)
  1102.     RTS
  1103.  
  1104. MT_VOLDOWN:
  1105.     MOVEQ    #0,D0
  1106.     MOVE.B    $3(A6),D0
  1107.     AND.B    #$F,D0
  1108.     SUB.W    D0,$12(A6)
  1109.     BPL.S    MT_VOL3
  1110.     CLR.W    $12(A6)
  1111. MT_VOL3:MOVE.W    $12(A6),$8(A5)
  1112.     RTS
  1113.  
  1114. MT_PORTUP:
  1115.     MOVEQ    #0,D0
  1116.     MOVE.B    $3(A6),D0
  1117.     SUB.W    D0,$10(A6)
  1118.     MOVE.W    $10(A6),D0
  1119.     AND.W    #$FFF,D0
  1120.     CMP.W    #$71,D0
  1121.     BPL.S    MT_POR2
  1122.     AND.W    #$F000,$10(A6)
  1123.     OR.W    #$71,$10(A6)
  1124. MT_POR2:MOVE.W    $10(A6),D0
  1125.     AND.W    #$FFF,D0
  1126.     MOVE.W    D0,$6(A5)
  1127.     RTS
  1128.  
  1129. MT_PORTDOWN:
  1130.     CLR.W    D0
  1131.     MOVE.B    $3(A6),D0
  1132.     ADD.W    D0,$10(A6)
  1133.     MOVE.W    $10(A6),D0
  1134.     AND.W    #$FFF,D0
  1135.     CMP.W    #$358,D0
  1136.     BMI.S    MT_POR3
  1137.     AND.W    #$F000,$10(A6)
  1138.     OR.W    #$358,$10(A6)
  1139. MT_POR3:MOVE.W    $10(A6),D0
  1140.     AND.W    #$FFF,D0
  1141.     MOVE.W    D0,$6(A5)
  1142.     RTS
  1143.  
  1144. MT_CHECKCOM2:
  1145.     MOVE.B    $2(A6),D0
  1146.     AND.B    #$F,D0
  1147.     CMP.B    #$D,D0
  1148.     BEQ.S    MT_PATTBREAK
  1149.     CMP.B    #$B,D0
  1150.     BEQ.S    MT_POSJMP
  1151.     CMP.B    #$C,D0
  1152.     BEQ.S    MT_SETVOL
  1153.     CMP.B    #$F,D0
  1154.     BEQ.S    MT_SETSPEED
  1155.     RTS
  1156. MT_PATTBREAK:
  1157.     NOT.B    MT_BREAK
  1158.     RTS
  1159. MT_POSJMP:
  1160.     MOVE.B    $3(A6),D0
  1161.     SUBQ.B    #$1,D0
  1162.     MOVE.B    D0,MT_SONGPOS
  1163.     NOT.B    MT_BREAK
  1164.     RTS
  1165. MT_SETVOL:
  1166.     CMP.B    #$40,$3(A6)
  1167.     BLE.S    MT_VOL4
  1168.     MOVE.B    #$40,$3(A6)
  1169. MT_VOL4:MOVE.B    $3(A6),$8(A5)
  1170.     RTS
  1171. MT_SETSPEED:
  1172.     CMP.B    #$1F,$3(A6)
  1173.     BLE.S    MT_SETS
  1174.     MOVE.B    #$1F,$3(A6)
  1175. MT_SETS:MOVE.B    $3(A6),D0
  1176.     BEQ.S    MT_RTS2
  1177.     MOVE.B    D0,MT_SPEED
  1178.     CLR.B    MT_COUNTER
  1179. MT_RTS2:RTS
  1180.  
  1181. MT_SIN:
  1182.         dc.B $00,$18,$31,$4A,$61,$78,$8D,$A1,$B4,$C5,$D4,$E0,$EB,$F4,$FA,$FD
  1183.         dc.B $FF,$FD,$FA,$F4,$EB,$E0,$D4,$C5,$B4,$A1,$8D,$78,$61,$4A,$31,$18
  1184.  
  1185. MT_PERIODS:
  1186.         dc.W $0358,$0328,$02FA,$02D0,$02A6,$0280,$025C,$023A,$021A,$01FC,$01E0
  1187.         dc.W $01C5,$01AC,$0194,$017D,$0168,$0153,$0140,$012E,$011D,$010D,$00FE
  1188.         dc.W $00F0,$00E2,$00D6,$00CA,$00BE,$00B4,$00AA,$00A0,$0097,$008F,$0087
  1189.         dc.W $007F,$0078,$0071,$0000,$0000
  1190.  
  1191. MT_SPEED:        dc.B    $6
  1192. MT_SONGPOS:        dc.B    $0
  1193. MT_PATTPOS:        dc.W    $0
  1194. MT_COUNTER:        dc.B    $0
  1195.  
  1196. MT_BREAK:        dc.B    $0
  1197. MT_DMACON:        dc.W    $0
  1198. MT_SAMPLESTARTS:BLK.L    $1F,0
  1199. MT_VOICE1:    BLK.W    10,0
  1200.             dc.W    $1
  1201.         BLK.W    3,0
  1202. MT_VOICE2:    BLK.W    10,0
  1203.             dc.W    $2
  1204.         BLK.W    3,0
  1205. MT_VOICE3:    BLK.W    10,0
  1206.             dc.W    $4
  1207.         BLK.W    3,0
  1208. MT_VOICE4:    BLK.W    10,0
  1209.             dc.W    $8
  1210.         BLK.W    3,0
  1211.     even
  1212. doslibname:    dc.b "dos.library",0
  1213.     even
  1214. DOSBASE:      dc.L    0
  1215. ************************
  1216. CHARBLOCK:BLK.B 9,0
  1217. ************************
  1218. FLIP:    dc.B 0
  1219. MK:    dc.B 0
  1220. SOFT:    dc.B 0
  1221. SONGLEN:    dc.B 0
  1222. PLAYERM:    dc.B 0
  1223. OPTIONS:    dc.B "XCFPNRISWO"
  1224.     even
  1225. MODLEN:    dc.l 0
  1226. HIGHPAT:    dc.l 0
  1227. INSTLEN:    dc.l 0
  1228. TOTALLEN:    dc.L 0
  1229. MT_DATA:    dc.l 0
  1230. FILEHANDLE:    dc.L 0
  1231. OPTIONS2:    dc.L    BUILDMENU,CONTI,FLIPPY,PLAYIT,RENAME
  1232.         dc.L    INSTRENAME,PLAYINST,SAVING,FLIPFILTER,COPYMOD
  1233. ************************
  1234. whandle:      dc.l    0
  1235. wstruct:    dc.b "CON:0/0/640/250/"
  1236.         dc.b "                  >>> NOISERIPPER V1.15 BY ALLEYCAT <<<"
  1237.         dc.b "                        ",0
  1238. ************************
  1239.     EVEN
  1240. buffer:blk.b 40,0
  1241. FILEBUFFER:    dc.B "DF0:MODULES/"
  1242. NAMEMOD:BLK.B    25,0
  1243. FILEBUFFER2:BLK.B    50,0
  1244.     EVEN
  1245. ACTUALPOS:    dc.L 0
  1246. ENDPOS:    dc.L 0
  1247. STARTPOS:    dc.L 0
  1248. ************************
  1249. CLSText:
  1250.         dc.b $1b,$63,$1b,$5b,$30,$78,$1b,$5b,$36,$34,$34,$75
  1251.         dc.b $1b,$5b,$31,$30,$79,$1b,$5b,$33,$33,$74
  1252.         dc.b $0c,$0c,$0a
  1253.         dc.b "                ",$0A,$0A,$0A
  1254.         dc.b "              L - Start Searching (Chipmem)",$0a,$0a
  1255.         dc.b "              H - Start Searching (Fastmem)",$0a,$0a
  1256.         dc.b "              X - Quit this Program",$0a,$0a
  1257.         dc.B 10,10,10,10,10,10,"Read the DOCS for more information!"
  1258.         dc.b $9b,$20,$70
  1259.         dc.b 0
  1260. ************************
  1261. CText1:    dc.b $9b,"13",$48
  1262.         dc.B "Your Command ->",0
  1263. ************************
  1264. CText2:    dc.b $0c,$0a,$0a
  1265.         dc.B "SEARCHING...PASS 1",$9B,$30,$20,$70,0
  1266. ************************
  1267. CText3:    dc.b $0c
  1268.         dc.b "SONG ADRESS : $",0
  1269. ************************
  1270. CText5:    dc.b $0C,$0a,$0a
  1271.         dc.B "SEARCHING...PASS2",$9B,$30,$20,$70,0
  1272. ************************
  1273. CText6:    dc.B "    SONGNAME : ",0
  1274. ************************
  1275. CText7:    dc.B $9B,"0",$3B,"57",$48
  1276.         dc.B "    MOD-LENGTH : $",0
  1277. ************************
  1278. CText8:    dc.B $0A
  1279.         dc.B "SONG-LENGTH :       $",0
  1280. ************************
  1281. CText9:    dc.B "    # OF PATTERNS :   $",0
  1282. ************************
  1283. TERENCE:
  1284.         dc.B "00000   $00000   $00000"
  1285. ************************
  1286. CText10:    dc.B $0A,$0A
  1287.         dc.B "INST#   INSTRUMENT NAME         LENGTH   REPEAT   REPLEN",$0A
  1288.         dc.B "   0    ....................    $00000   $00000   $00000",$0A
  1289.         dc.B "   1    ....................    $00000   $00000   $00000",$0A
  1290.         dc.B "   2    ....................    $00000   $00000   $00000",$0A
  1291.         dc.B "   3    ....................    $00000   $00000   $00000",$0A
  1292.         dc.B "   4    ....................    $00000   $00000   $00000",$0A
  1293.         dc.B "   5    ....................    $00000   $00000   $00000",$0A
  1294.         dc.B "   6    ....................    $00000   $00000   $00000",$0A
  1295.         dc.B "   7    ....................    $00000   $00000   $00000",$0A    
  1296.         dc.B "   8    ....................    $00000   $00000   $00000",$0A
  1297.         dc.B "   9    ....................    $00000   $00000   $00000",$0A
  1298.         dc.B "   A    ....................    $00000   $00000   $00000",$0A
  1299.         dc.B "   B    ....................    $00000   $00000   $00000",$0A
  1300.         dc.B "   C    ....................    $00000   $00000   $00000",$0A
  1301.         dc.B "   D    ....................    $00000   $00000   $00000",$0A
  1302.         dc.B "   E    ....................    $00000   $00000   $00000",$0A
  1303.         dc.B "   F    ....................    $00000   $00000   $00000",$0A
  1304.         dc.b $0a
  1305.         dc.B "F       - FLIP INSTRUMENT PAGES               C          - CONTINUE SEARCH",$0A
  1306.         dc.B "X       - RETURN TO MAIN MENU                 P          - PLAY SONG",$0A
  1307.         dc.B "N(name) - RENAME SONG                         R(#)(name) - RENAME INSTRUMENT"
  1308.         dc.B $0A
  1309.         dc.B "I(#)    - PLAY INSTRUMENT                     SI(#)      - SAVE INSTRUMENT",$0A
  1310.         dc.B "SM      - SAVE MODULE (AUTO)                  SF         - SAVE MODULE (SELF)"
  1311.         dc.B 10
  1312.         dc.B "W       - FLIP FILTER                         O          - COPY MODULE TO $40000"
  1313.         dc.B $9B,$20,$70
  1314.         dc.B $0A,$0A,"YOUR COMMAND ->",0
  1315. CTEXT11:
  1316.         dc.B $9B,"30",$48
  1317.         dc.B "*** ERROR OCCURED ! PLEASE CHECK DISK ***         (MOUSE)",0
  1318. CTEXT12:
  1319.     dc.B $9B,"29",$48
  1320.     dc.B "ENTER THE FILENAME (WITH PATH) ->",0
  1321.     EVEN
  1322. INSTIS:BLK.L    32,0
  1323.